#include "hspdsc.as" #include "gdi32.as" title "DirectShow キャプチャデバイス表示(AVIファイルで保存)" cls 4 dsc_Init // 初期化 // デバイスリスト用の変数を初期化 sdim devlist, dsc_GetDeviceListSize() // デバイスリストを変数に格納 dsc_GetDeviceList devlist, 0 if stat == 0 || stat == -2 : dialog "デバイスが見つかりません" : end // ビデオコーデックの一覧取得 size = dsc_GetCodecListSize(0) sdim codeclist, size*2 codeclist = "無圧縮\n"+codeclist dsc_GetCodecList codeclist, 0 objsize 300, 20 combox did, 100, devlist combox cid, 100, codeclist objsize 150,20 button "映像をAVIに保存",*save button "デバイスを停止",*_stop button "プロパティを表示",*prop button "解像度プロパティを表示",*prop2 button "プロパティ表示(自前)",*prop3 button gosub "終了する",*exit onexit gosub *exit stop *save // キャプチャ処理 dsc_SetActiveSel 0 // 選択されたコーデック名を取得 notesel codeclist noteget codecname, cid if codecname == "無圧縮" { // 無圧縮の場合は 0 を指定 codecname = 0 pcodecname = varptr(codecname) }else{ pcodecname = varptr(codecname) } dsc_Open did, 301, 0, "test.avi", codecname if stat < 0 : dialog "エラーが発生しました。("+stat+")",1,"DEVICE-ERROR" : stop gsel 0, 1 // 解像度やフレームレートを指定できますが、デバイス依存です。 dsc_SetDevWidth 640 dsc_SetDevHeight 480 dsc_SetDevFrameRate 15.0 dsc_SetDevCapConfig dsc_Play hwnd, 160, 120, 320, 240 if stat < 0 : dialog "エラーが発生しました。",1,"CAPTURE-ERROR" : stop gsel 0, 1 stop *_stop // 停止&クローズ dsc_Stop dsc_Close stop *prop // 再生中でないと失敗します。 dsc_FilterProp hwnd, "Device Filter" stop *prop2 // dsc_playを使う前でないとうまく実行できない為、再生中の場合は一度リセットする。 dsc_Stop dsc_Close // クローズする dsc_Open did, 1, 0, 1, 1 // 再度オープン gsel 0, 1 dsc_DevPinProp hwnd // ここでプロパティを表示 dsc_Play hwnd, 160, 120, 320, 240 // 再び再生 stop *exit dsc_Stop dsc_Close end *prop3 // サイズとFourCCを取得します dialog "サイズ:"+dsc_CapW+"x"+dsc_CapH+"\nFourCC:"+dsc_FourCC+"\n"+strf("%2.2ffps",double((1.0 * 10 * 1000 * 1000) / dsc_AvgFrame)) stop